﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using CurrencyConverter.IndicadorEconomicoBCCR;

namespace CurrencyConverter
{
    /// <summary>
    /// Clase que maneja la conectividad con el webservice del Banco Central de Costa Rica
    /// </summary>
    class CurrencyExtractor
    {
        private wsIndicadoresEconomicosSoapClient _indicadorEconomicosSoapClient;

        #region Constructor
        /// <summary>
        /// Constructor
        /// </summary>s
        public CurrencyExtractor()
        {
            RestartWebClient();
        }

        #endregion
        #region Methods
        /// <summary>
        /// Metodo que permite reiniciar el webserver client 
        /// </summary>
        public bool RestartWebClient()
        {
            try
            {
                _indicadorEconomicosSoapClient = new wsIndicadoresEconomicosSoapClient("wsIndicadoresEconomicosSoap");
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        /// <summary>
        /// Método que permite obtener el tipo de cambio del Banco Central de Costa Rica
        /// </summary>
        /// <param name="indicador">Codigo del tipo de Indicador economico que se quiere</param>
        /// <param name="fechaInicio">Fecha de inicio de la consulta</param>
        /// <param name="fechaFinal">Fecha final de la consulta</param>
        /// <param name="nombreUsuario">Nombre de usuario que realiza la consulta debe de tener nombre significativo y un email</param>
        /// <param name="subniveles">Si desea obtener los subniveles del indicador</param>
        /// <returns>Un DataSet que contiene el tipo de cambio</returns>
        public DataSet ObtenerTipoCambio(string indicador, string fechaInicio, string fechaFinal, string nombreUsuario, Boolean subniveles)
        {
            try
            {
                var mostrarSubniveles = subniveles ? "S" : "N";
                var respuesta = _indicadorEconomicosSoapClient.ObtenerIndicadoresEconomicos(indicador, fechaInicio, fechaFinal,
                                                                           nombreUsuario, mostrarSubniveles);
                return respuesta;
            }
            catch (Exception)
            {
                return null;
            }
        }

        /// <summary>
        /// Método que permite obtener el tipo de cambio del Banco Central de Costa Rica
        /// </summary>
        /// <param name="indicador">Codigo del tipo de Indicador economico que se quiere</param>
        /// <param name="fechaInicio">Fecha de inicio de la consulta</param>
        /// <param name="fechaFinal">Fecha final de la consulta</param>
        /// <param name="nombreUsuario">Nombre de usuario que realiza la consulta debe de tener nombre significativo y un email</param>
        /// <param name="subniveles">Si desea obtener los subniveles del indicador</param>
        /// <returns>Un string en XML que contiene el tipo de cambio</returns>
        public string ObtenerTipoCambioXml(string indicador, string fechaInicio, string fechaFinal, string nombreUsuario, Boolean subniveles)
        {
            try
            {
                var mostrarSubniveles = subniveles ? "S" : "N";
                var respuesta = _indicadorEconomicosSoapClient.ObtenerIndicadoresEconomicosXML(indicador, fechaInicio, fechaFinal,
                                                                           nombreUsuario, mostrarSubniveles);
                return respuesta.Contains("error")  ? null : respuesta;
            }
            catch (Exception)
            {
                return null;
            }
        } 


        #endregion
    }
}
